home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 68K / Demo / tkinter / matt / menu-simple.py < prev    next >
Text File  |  1996-05-20  |  4KB  |  133 lines

  1. from Tkinter import *
  2.  
  3. # some vocabulary to keep from getting confused. This terminology 
  4. # is something I cooked up for this file, but follows the man pages 
  5. # pretty closely
  6. #       This is a MENUBUTTON
  7. #       V
  8. # +-------------+
  9. # |             |
  10. # +------------++------------++------------+
  11. # |            ||            ||            |
  12. # |  File      ||  Edit      || Options    |   <-------- the MENUBAR
  13. # |            ||            ||            |
  14. # +------------++------------++------------+
  15. # | New...         |
  16. # | Open...        |
  17. # | Print          |
  18. # |                |  <------ This is a MENU. The lines of text in the menu are
  19. # |                |                          MENU ENTRIES
  20. # |                +---------------+
  21. # | Open Files >   | file1         |               
  22. # |                | file2         |
  23. # |                | another file  | <------ this cascading part is also a MENU
  24. # +----------------|               |
  25. #                  |               |
  26. #                  |               |
  27. #                  |               |
  28. #                  +---------------+
  29.  
  30.  
  31.  
  32. def new_file():
  33.     print "opening new file"
  34.  
  35.  
  36. def open_file():
  37.     print "opening OLD file"
  38.  
  39.  
  40. def makeFileMenu():
  41.     # make menu button : "File"
  42.     File_button = Menubutton(mBar, {'text': 'File', 
  43.                     'underline': 0,
  44.                     Pack: {'side': 'left', 
  45.                        'padx': '1m'}})
  46.     
  47.     # make the pulldown part of the File menu. The parameter passed is the master.
  48.     # we attach it to the File button as a python attribute called "menu" by convention.
  49.     # hopefully this isn't too confusing...
  50.     File_button.menu = Menu(File_button)
  51.     
  52.     # add an item. The first param is a menu entry type, 
  53.     # must be one of: "cascade", "checkbutton", "command", "radiobutton", "seperator"
  54.     # see menu-demo-2.py for examples of use
  55.     File_button.menu.add('command', {'label': 'New...', 
  56.                      'underline': 0, 
  57.                      'command' : new_file})
  58.     
  59.     
  60.     File_button.menu.add('command', {'label': 'Open...', 
  61.                      'underline': 0, 
  62.                      'command' : open_file})
  63.     
  64.     File_button.menu.add('command', {'label': 'Quit', 
  65.                      'underline': 0, 
  66.                      'command': 'exit'})
  67.     
  68.     
  69.     # set up a pointer from the file menubutton back to the file menu
  70.     File_button['menu'] = File_button.menu
  71.  
  72.     return File_button
  73.  
  74.  
  75.  
  76. def makeEditMenu():
  77.     Edit_button = Menubutton(mBar, {'text': 'Edit', 
  78.                     'underline': 0,
  79.                     Pack: {'side': 'left', 
  80.                        'padx' : '1m'}})
  81.     Edit_button.menu = Menu(Edit_button)
  82.  
  83.     # just to be cute, let's disable the undo option:
  84.     Edit_button.menu.add('command', {"label" : "Undo"} )
  85.     # undo is the 0th entry...
  86.     Edit_button.menu.entryconfig(0, {"state" : "disabled"})
  87.  
  88.     # and these are just for show. No "command" callbacks attached.
  89.     Edit_button.menu.add('command', {"label" : "Cut"} )
  90.     Edit_button.menu.add('command', {"label" : "Copy"} )
  91.     Edit_button.menu.add('command', {"label" : "Paste"} )
  92.                     
  93.     # set up a pointer from the file menubutton back to the file menu
  94.     Edit_button['menu'] = Edit_button.menu
  95.  
  96.     return Edit_button
  97.  
  98.  
  99. #################################################
  100.  
  101. #### Main starts here ...
  102. root = Tk()
  103.  
  104.  
  105. # make a menu bar
  106. mBar = Frame(root, {'relief': 'raised', 
  107.             'bd': 2,
  108.             Pack: {'side': 'top', 
  109.                'fill': 'x'}})
  110.  
  111. File_button = makeFileMenu()
  112. Edit_button = makeEditMenu()
  113.  
  114. # finally, install the buttons in the menu bar. 
  115. # This allows for scanning from one menubutton to the next.
  116. mBar.tk_menuBar(File_button, Edit_button)
  117.  
  118.  
  119. root.title('menu demo')
  120. root.iconname('packer')
  121.  
  122. root.mainloop()
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.